﻿using System;

namespace TfsCloudDeploy.Deployment.Framework.Interfaces
{
    public interface ILog
    {
        #region Properties

        bool IsDebugEnabled
        {
            get;
        }

        bool IsErrorEnabled
        {
            get;
        }

        bool IsFatalEnabled
        {
            get;
        }

        bool IsInfoEnabled
        {
            get;
        }

        bool IsWarnEnabled
        {
            get;
        }

        #endregion

        #region Methods

        void Debug(object message, Exception exception);
        void Debug(object message);
        void DebugFormat(IFormatProvider provider, string format, params object[] args);
        void DebugFormat(string format, params object[] args);
        void Error(object message, Exception exception);
        void Error(object message);
        void ErrorFormat(IFormatProvider provider, string format, params object[] args);
        void ErrorFormat(string format, params object[] args);
        void Fatal(object message, Exception exception);
        void Fatal(object message);
        void FatalFormat(IFormatProvider provider, string format, params object[] args);
        void FatalFormat(string format, params object[] args);
        void Info(object message, Exception exception);
        void Info(object message);
        void InfoFormat(IFormatProvider provider, string format, params object[] args);
        void InfoFormat(string format, params object[] args);
        void Warn(object message, Exception exception);
        void Warn(object message);
        void WarnFormat(IFormatProvider provider, string format, params object[] args);
        void WarnFormat(string format, params object[] args);

        #endregion
    }
}
